文件 IO

检查文件权限

const (
   PermR = (4)
   PermW = (2)
   PermX = (1)
)

 if info, err := os.Stat("/proc/1/cmdline"); err == nil {
     log.Println(info.Mode())
     if info.Mode()&PermR == 0 {
         log.Fatalln("没有对 /proc/1/cmdline 的读权限")
     }
 } else {
     log.Fatalln(err)
 }

监控文件变化

Linux 提供了 inotify 来监控文件系统的变化,有些库对其的包装,这些库有:

func watch(p string, event chan<- EventItem) {
   watcher, err := inotify.NewWatcher()
   if err != nil {
      log.Fatal(err)
   }

   dir := path.Dir(p)
   err = watcher.Watch(dir)
   if err != nil {
      log.Fatal(err)
   }

   register(p)

   go func() {
      defer watcher.Close()
      for {
         select {
            case ev := <-watcher.Event:
                if ev.Mask&(inotify.IN_CLOSE_WRITE) > 0 &&
                   p == ev.Name {

                   event <- diff(p)
               }
            case err := <-watcher.Error:
               log.Println("error:", err)
           }
       }
   }()
}

inotify 无法监视 /proc 这种目录

Last moify: 2022-12-04 15:11:33
Build time:2025-07-18 09:41:42
Powered By asphinx